package com.zhn;

/**
 * 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
 *
 * 给你两个整数 x 和 y，计算并返回它们之间的汉明距离。
 *
 *
 *
 * 示例 1：
 *
 * 输入：x = 1, y = 4
 * 输出：2
 * 解释：
 * 1   (0 0 0 1)
 * 4   (0 1 0 0)
 *        ↑   ↑
 * 上面的箭头指出了对应二进制位不同的位置。
 */
public class HammingDistance {
    public int hammingDistance(int x, int y) {
        //采用异或运算，res为x，y异或的结果
        int res = x^y;
        int count = 0;
        //统计res的1的数量就可以
        while(res!=0){
            //获取res的最低位是不是1
            int i = res & 1;
            //判断结束右移，下一次循环再判断最低位
            res = res >> 1;
            //为1则++
            if(i != 0){
                count++;
            }
        }
        return count;
    }
}
